package com.xbongbong.saas.service;

import com.xbongbong.paas.domain.entity.ext.PaasFormDataEntityExt;
import com.xbongbong.paas.pojo.FieldAttrEntityForImport;
import com.xbongbong.paas.pojo.dto.FormDataAddDTO;
import com.xbongbong.paas.pojo.dto.FormDataListDTO;
import com.xbongbong.paas.pojo.dto.FormDataRepeatDTO;
import com.xbongbong.paas.pojo.dto.FormDataUpdateDTO;
import com.xbongbong.paas.pojo.dto.ImportFormDataDTO;
import com.xbongbong.paas.pojo.imports.CellTitlePojo;
import com.xbongbong.paas.pojo.imports.RowGroupPojo;
import com.xbongbong.paas.pojo.vo.FormDataAddVO;
import com.xbongbong.paas.pojo.vo.FormDataRepeatVO;
import com.xbongbong.paas.pojo.vo.PaasFormDataEsListVO;
import com.xbongbong.paas.toolbox.exception.XbbException;
import com.xbongbong.paas.toolbox.wrap.BaseDTO;
import com.xbongbong.paas.toolbox.wrap.BaseVO;
import com.xbongbong.pro.businessdata.pojo.dto.ProductListDataDTO;
import com.xbongbong.pro.companyconfig.pojo.dto.CompanyConfigGetPriceConfigDTO;
import com.xbongbong.pro.companyconfig.pojo.vo.CompanyConfigGetPriceConfigVO;
import com.xbongbong.pro.priceset.pojo.dto.PriceProductSetDTO;
import com.xbongbong.pro.priceset.pojo.dto.PriceProductSetDelDTO;
import com.xbongbong.pro.priceset.pojo.dto.PriceProductSetSaveDTO;
import com.xbongbong.pro.priceset.pojo.dto.PriceSetConditionDTO;
import com.xbongbong.pro.priceset.pojo.dto.PriceSetGetDTO;
import com.xbongbong.pro.priceset.pojo.dto.PriceSetListDTO;
import com.xbongbong.pro.priceset.pojo.dto.PriceSetSaveDTO;
import com.xbongbong.pro.priceset.pojo.dto.PriceSetSortDTO;
import com.xbongbong.pro.priceset.pojo.vo.PriceProductSetListVO;
import com.xbongbong.pro.priceset.pojo.vo.PriceProductSetSaveVO;
import com.xbongbong.pro.priceset.pojo.vo.PriceSetFormTemplateVO;
import com.xbongbong.pro.priceset.pojo.vo.PriceSetGetConditionVO;
import com.xbongbong.pro.priceset.pojo.vo.PriceSetGetVO;
import com.xbongbong.pro.priceset.pojo.vo.PriceSetSaveVO;

import java.util.List;
import java.util.Map;

public interface PriceSetService {


    CompanyConfigGetPriceConfigVO getPriceSet(PriceSetListDTO priceSetListDTO) throws XbbException;

    PriceSetGetVO priceEnableOrClose(CompanyConfigGetPriceConfigDTO companyConfigGetPriceConfigDTO) throws XbbException;

    PriceSetGetVO delPriceSet(CompanyConfigGetPriceConfigDTO companyConfigGetPriceConfigDTO) throws XbbException;

    PriceSetGetConditionVO getCondition(PriceSetConditionDTO priceSetConditionDTO) throws XbbException;

    PriceProductSetListVO getPriceProductSet(PriceProductSetDTO priceSetDTO) throws XbbException;

    PriceSetFormTemplateVO getTemplateForm(BaseDTO baseDTO) throws XbbException;

    PriceSetSaveVO savePriceSet(PriceSetSaveDTO priceSetSaveDTO) throws XbbException;

    PriceProductSetSaveVO savePriceProductSet(PriceProductSetSaveDTO priceProductSetSaveDTO) throws XbbException;

    PriceSetGetVO editPriceSet(PriceSetGetDTO priceSetGetDTO) throws XbbException;

    PaasFormDataEsListVO getProductSearchList(ProductListDataDTO productListDataDTO) throws XbbException;

    BaseVO sort(PriceSetSortDTO priceSetSortDTO) throws XbbException;

    FormDataAddDTO formatExcelValue(ImportFormDataDTO importFormDataDTO, List<CellTitlePojo> titlePojoList, RowGroupPojo rowGroupPojo, List<FieldAttrEntityForImport> fieldAttrList) throws XbbException;

    /**
     * 价目表，只给导出用
     * @param formDataListDTO
     * @return
     * @throws XbbException
     */
    PaasFormDataEsListVO priceSetList(FormDataListDTO formDataListDTO) throws XbbException;

    FormDataAddVO add(FormDataAddDTO formDataSaveDTO) throws XbbException;

    void formatExportValue(List<PaasFormDataEntityExt> paasFormDataESList, FormDataListDTO formDataListDTO, List<FieldAttrEntityForImport> fieldAttrList) throws XbbException;

    BaseVO getLinkProductField(PriceProductSetDTO priceProductSetDTO) throws XbbException;

    BaseVO deleteProductPrice(PriceProductSetDelDTO priceProductSetDelDTO) throws XbbException;

    FormDataRepeatVO importRepeat(FormDataRepeatDTO formDataRepeatDTO, Map<String, Object> repeatValueMap) throws XbbException;

    void importCover(FormDataUpdateDTO formDataUpdateDTO) throws XbbException;
}
